www.gusucode.com > 基于Visual C++高级界面特效制作百例源码程序 > 基于Visual C++高级界面特效制作百例源码程序/code/char05/enh_diblook/PreviewFileDlg.cpp
///////////////////////////////////////////////////////////////////////////// // Copyright (C) 1998 by Jorge Lodos // All rights reserved // // Distribute and use freely, except: // 1. Don't alter or remove this notice. // 2. Mark the changes you made // // Send bug reports, bug fixes, enhancements, requests, etc. to: // lodos@cigb.edu.cu ///////////////////////////////////////////////////////////////////////////// // PreviewFileDlg.cpp : implementation file // #include "stdafx.h" #include "resource.h" #include "Dib.h" #include "DibStatic.h" #include "PreviewFileDlg.h" #include <dlgs.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPreviewFileDlg IMPLEMENT_DYNAMIC(CPreviewFileDlg, CFileDialog) CPreviewFileDlg::CPreviewFileDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) { m_ofn.Flags |= (OFN_EXPLORER | OFN_ENABLETEMPLATE); m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_FILEOPENPREVIEW); m_bPreview = TRUE; } BEGIN_MESSAGE_MAP(CPreviewFileDlg, CFileDialog) //{{AFX_MSG_MAP(CPreviewFileDlg) ON_BN_CLICKED(IDC_PREVIEW, OnPreview) ON_WM_QUERYNEWPALETTE() ON_WM_PALETTECHANGED() ON_WM_SETFOCUS() //}}AFX_MSG_MAP END_MESSAGE_MAP() BOOL CPreviewFileDlg::OnInitDialog() { CFileDialog::OnInitDialog(); m_DIBStaticCtrl.SubclassDlgItem(IDC_IMAGE, this); GetDlgItem(IDC_PREVIEW)->SendMessage(BM_SETCHECK, (m_bPreview) ? 1 : 0); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CPreviewFileDlg::OnFileNameChange() { CFileDialog::OnFileNameChange(); if (m_bPreview) m_DIBStaticCtrl.LoadDib(GetPathName()); // the control will handle errors } void CPreviewFileDlg::OnFolderChange() { CFileDialog::OnFolderChange(); m_DIBStaticCtrl.RemoveDib(); } void CPreviewFileDlg::OnPreview() { m_bPreview = !m_bPreview; if (!m_bPreview) m_DIBStaticCtrl.RemoveDib(); // no preview else m_DIBStaticCtrl.LoadDib(GetPathName()); // the control will handle errors } BOOL CPreviewFileDlg::OnQueryNewPalette() { m_DIBStaticCtrl.SendMessage(WM_QUERYNEWPALETTE); // redo the palette if necessary return CFileDialog::OnQueryNewPalette(); } void CPreviewFileDlg::OnPaletteChanged(CWnd* pFocusWnd) { CFileDialog::OnPaletteChanged(pFocusWnd); m_DIBStaticCtrl.SendMessage(WM_PALETTECHANGED, (WPARAM)pFocusWnd->GetSafeHwnd()); // redo the palette if necessary } void CPreviewFileDlg::OnSetFocus(CWnd* pOldWnd) { CFileDialog::OnSetFocus(pOldWnd); m_DIBStaticCtrl.SendMessage(WM_QUERYNEWPALETTE); // redo the palette if necessary } #ifdef _DEBUG void CPreviewFileDlg::Dump(CDumpContext& dc) const { CFileDialog::Dump(dc); if (m_bPreview) dc << "preview is enabled\n"; else dc << "preview is disabled\n"; } #endif //_DEBUG